Insecure Bank2 취약점(5)

Insecure Bank2 취약점(5)

Description
안전하지 않은 콘텐츠 프로바이더 접근
category
MobileHacking
Tag
Mobile Security
Andorid
Date
Jan 19, 2024 08:39 AM

안전하지 않은 콘텐츠 프로바이더 접근

컨텐츠 프로바이더란?

안드로이드에서 프로바이더는 애플리케이션 사이의 데이터 교환 연결 통로이다.
각종 설정 값 및 DB에 접근하는 식으로 사용된다.
컨텐츠 프로바이더에 접근하기 위해선 프로바이더의 주소인 URI와 리졸버가 필요하다.
컨텐츠 프로바이더 주소는 content://authority/path와 같은 형식으로 되어있다.
프로바이더의 authority는 고유 주소이고, path는 데이터 위치 정보이다.
 

취약점 진단

AndroidManifest.xml을 살펴보면 <provider>가 존재하는데 android:exported 값이 true로 설정되어 있기 때문에 외부에서 insecurebankv2의 어플의 내부 저장소로 접근이 가능하다.
notion image
 
com.android.insecurebankv2.TrackUserContentProvider의 코드를 살펴보면 URI를 얻을 수 있다.
URI : content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
따라서 컨텐츠 프로바이더에 접근을 통해 내부 컨텐츠를 볼 수 있다.
notion image
 

ADB를 통한 접근

ADB의 content query를 사용하면 데이터를 열람 가능하다.
adb shell su content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
 
출력 된 데이터에는 로그인한 유저들의 이름이 저장되는 것을 볼 수 있다.
notion image
 

Drozer를 통한 접근

Drozer는 컨텐츠 프로바이더 uri 탐지 기능을 제공한다.
해당 명령어를 통해 URI 탐지 결과 Accessible content URIs가 나오는 것을 볼 수 있다.
run scanner.provider.finduris -a com.android.insecurebankv2
notion image
 
해당 명령어를 통해 URI를 조회 할 수 있다.
run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers/
notion image
 

대응방안

브로드캐스트 리시버, 액티비티와 같이 프로바이더 또한 android:exported의 값을 false로 변경하여 외부 접근을 보안 할 수 있다.